* About

self-sovereign-id, an SSI frontend prototype.
Built with [[https://vuejs.org][vue]][fn:1].

-------------------------------------------------------------------------------

* License

Copyright 2019 vaeringjar.
Code distributed under the AGPLv3+.
Media distributed under the [[https://creativecommons.org/licenses/by-sa/4.0/legalcode][CC BY-SA 4.0]][fn:2].

* Project goals

- Multiple identities, such as having multiple business cards.
- vCard support.
- PGP for signing and encrypting communications.
- Use generic fingerprints to ID and join IDs to start, but later distinguish between MD5, SHA256, etc.
- Communication media agnostic, eg email or SMS
- Blockchain or DHT agnostic.

* Implementation Notes

- Fingerprints can have but do not require spaces or colons; match a fingerprint with spaces on one without.
- Key with newline chars must replace them with \n in order for compatibility.
- Demo key pairs included in the project for development will use weak encryption.

* Using

** keys

NOTE: Eventually an ssi-backend project will handle some of this.

#+BEGIN_SRC
# Generate a test private key
openssl genpkey -algorithm RSA -out key.pem -pkeyopt \
    rsa_keygen_bits:512 -pkeyopt rsa_keygen_pubexp:3 ;

# Write out the test public key
openssl rsa -in key.pem -pubout > key.pub

# This should print out all the details about the key:
openssl rsa -text -inform pem -in key.pem

# Replace newlines with escaped newlines for the json.
awk -vRS="\n" -vORS="\\\n" '1' key.pem
awk -vRS="\n" -vORS="\\\n" '1' key.pub

# Printing the fingerprint.
# Can also replace sha256 for md5 to get a shorter fingerprint.
openssl rsa -pubout -outform DER -in key.pem | openssl sha256 -c

#+END_SRC

** npm

First install npm. Then:

#+BEGIN_SRC
# Project setup
npm install

# Compiles and hot-reloads for development
npm run serve

# Compiles and minifies for production
npm run build

# Run your tests
npm run test

# Lints and fixes files
npm run lint
#+END_SRC

** Customize configuration

See [[https://cli.vuejs.org/config/][Configuration Reference]][fn:3].

* See Also
- [[https://tools.ietf.org/html/rfc4880][RFC 4880 OpenPGP Message Format]]

* Footnotes

[fn:1]
[fn:2]
[fn:3]
